package main

import "fmt"

type Person struct {
	Name string
}

func (p Person) speak() {
	fmt.Println(p.Name, "是一个好人")
}

//给Person类型绑定一个方法  我理解为类似于java中 在类里面添加方法
func (person Person) test() {
	person.Name = "jack"
	fmt.Println("test() name=", person.Name) // "jack
}

//给Person结构体添加jisuan方法可以计算从1+1000的结果
//说明方法体内可以跟函数一样，进行各种运算
func (p Person) jisuan() {
	res := 0
	for i := 0; i < 1000; i++ {
		res += i
	}
	fmt.Println(p.Name, "计算结果是:", res)
}

//提供参数
func (p Person) jisuan2(n int) {
	res := 0
	for i := 0; i < n; i++ {
		res += i
	}
	fmt.Println(p.Name, "计算结果是:", res)
}

func (p Person) getSum(n1 int, n2 int) int {
	return n1 + n2
}

func main() {

	var p Person
	p.Name = "张三"
	p.test()            //调用方法
	fmt.Println(p.Name) // 张三

	p.speak()
	p.jisuan()
	p.jisuan2(20)
	sum := p.getSum(1, 2)
	fmt.Println(sum)
}
